/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isIsomorphic = function (s, t) {
  if (s.length !== t.length) return false;

  const mapST = new Map(); // s到t的映射
  const mapTS = new Map(); // t到s的映射

  for (let i = 0; i < s.length; i++) {
    const charS = s[i];
    const charT = t[i];

    // 检查s到t的映射
    if (mapST.has(charS)) {
      if (mapST.get(charS) !== charT) return false;
    } else {
      mapST.set(charS, charT);
    }

    // 检查t到s的映射（确保双向唯一）
    if (mapTS.has(charT)) {
      if (mapTS.get(charT) !== charS) return false;
    } else {
      mapTS.set(charT, charS);
    }
  }

  return true;
};